#include "window_common.h"

enum {
	WIDGET_ID_LIST = 0,
	WIDGET_ID_MAX
};

static const gkt_widget_list_item_s sc_window_system_setting_list_items[] = {
	GKT_WIDGET_LIST_STATIC_ITEM(WINDOW_VOICE_COMBINED_ID(dual_verify),
		WINDOW_ID_dual_verify),
#if defined(GKT_CONFIG_DOOR_TAMPER_ENABLE) \
	&& GKT_CONFIG_DOOR_TAMPER_ENABLE	
	GKT_WIDGET_LIST_STATIC_ITEM(WINDOW_VOICE_COMBINED_ID(door_tamper),
		WINDOW_ID_door_tamper),
#endif	
#if !defined(GKT_CONFIG_WINDOW_VOICE_MUTE_DISABLE) \
	|| !GKT_CONFIG_WINDOW_VOICE_MUTE_DISABLE
	GKT_WIDGET_LIST_STATIC_ITEM(WINDOW_VOICE_COMBINED_ID(quiet_mode),
		WINDOW_ID_voice_mute),
#endif
#if defined(GKT_CONFIG_BACKBOARD_ENABLE) && GKT_CONFIG_BACKBOARD_ENABLE
#if defined(GKT_CONFIG_DOOR_LOCK_ENABLE) && GKT_CONFIG_DOOR_LOCK_ENABLE
	GKT_WIDGET_LIST_STATIC_ITEM(WINDOW_VOICE_COMBINED_ID(set_1),
		WINDOW_ID_motor_setting),
#endif
#if (defined(GKT_CONFIG_NETWORK_ENABLE) && GKT_CONFIG_NETWORK_ENABLE)
	GKT_WIDGET_LIST_STATIC_ITEM(WINDOW_VOICE_COMBINED_ID(set_2),
		WINDOW_ID_network_setting),
#endif
#endif
};
#define WINDOW_SYSTEM_LIST_ITEM_NUMS	\
	sizeof(sc_window_system_setting_list_items) / sizeof(gkt_widget_list_item_s)

static const gkt_widget_list_attr_s sc_window_system_setting_list_attr = 
	GKT_WIDGET_LIST_STATIC_ATTR(WINDOW_SYSTEM_LIST_ITEM_NUMS, 
		sc_window_system_setting_list_items);

GKT_WINDOW_WIDGET_DESCS_DEFINE(system_setting) = {
	[WIDGET_ID_LIST] = GKT_WIDGET_LIST_DESC(0, &sc_window_system_setting_list_attr),
};

static int window_system_setting_event_handler(
				uint32_t major_type, uint32_t minor_type, 
				uint32_t id, uint32_t data)
{
	int retval = GKT_EVENT_HANDLE_CONTINUE;
	gkt_window_id_t window_id;

	switch(major_type) {
		case GKT_EVENT_WINDOW:
			if (minor_type == GKT_WINDOW_ACTIVE)
				window_common_mask_except_number_repeat_return(WINDOW_SYSTEM_LIST_ITEM_NUMS);
			break;
		case GKT_EVENT_WIDGET:
			if(minor_type == GKT_WIDGET_EVENT_CLICK) {
				window_id = (gkt_window_id_t)sc_window_system_setting_list_items[data].data;
				gkt_window_show(window_id, 0);
				retval = GKT_EVENT_HANDLE_COMPLETE;
			}
			break;
		default:	
			break;
	}

	return retval;
}

GKT_WINDOW_DESC_DEFINE(system_setting);

